﻿using BCCommon;
using BCCommon.TMS.ManageFeeBusiness;
using BCDto.Sim.Admin.Admin;
using BCDto.TMS.PlatformManageFee.PlatformManageFeeConfig;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace BCService.TMS.PlatformManageFee.PlatformManageFeeConfig
{
    /// <summary>
    /// 平台管理费配置
    /// </summary>
    public interface IPlatformManageFeeConfigService
    {
        /// <summary>
        /// 更新平台管理费配置
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="platformManageFeeConfigId">平台管理费配置Id</param>
        /// <param name="dto">平台管理费配置修改信息</param>
        /// <returns></returns>
        PlatformManageFeeConfigDto Update(AdminDto admin, long platformManageFeeConfigId, PlatformManageFeeConfigPutDto dto);

        /// <summary>
        /// 删除平台管理费配置
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="platformManageFeeConfigId">平台管理费配置Id</param>
        void Delete(AdminDto admin, long platformManageFeeConfigId);

        /// <summary>
        /// 获取平台管理费配置
        /// </summary>
        /// <param name="platformManageFeeConfigId">平台管理费配置Id</param>
        /// <returns></returns>
        PlatformManageFeeConfigDto GetById(long platformManageFeeConfigId);

        /// <summary>
        /// 查询平台管理费配置
        /// </summary>
        /// <param name="admin">管理员信息</param>
        /// <param name="companyId">公司Id</param>
        /// <param name="manageFeeBusinessType">管理费业务类型</param>
        /// <param name="pageIndex">页号</param>
        /// <param name="pageSize">每页数据条数</param>
        /// <returns></returns>
        PageableList<PlatformManageFeeConfigViewDto> GetList(AdminDto admin, int? companyId, TMSManageFeeBusinessType? manageFeeBusinessType, int pageIndex, int pageSize);

        /// <summary>
        /// 更新平台管理费配置当前平台管理费执行计划Id
        /// </summary>
        /// <param name="platformManageFeeExecutionPlanId">平台管理费执行计划Id</param>
        /// <param name="subAgentRecordId">下级代理商记录Id</param>
        /// <param name="manageFeeBusinessType">管理费业务类型</param>
        /// <param name="manageFeeRatio">管理费比例</param>
        void UpdateCurrentlyPlanId(long platformManageFeeExecutionPlanId, long subAgentRecordId, TMSManageFeeBusinessType manageFeeBusinessType, decimal manageFeeRatio);
    }
}
